第十三章. Quartz 和 Web 应用 (第一部分)
第十三章. Quartz 和 Web 应用到目前为止,我们与 Quartz 框架的交互主要还是通过命令行。对于有些使用者,比如我的一个大学计算机科学老教授(它曾每天都告诉我说,"GUI 是给能力差的人用的!"),使用命令行让他们很乐意接受。当应用程序被开发完成后,它们常要移交给终端用户或支持团队。在命令行应用程序上层架设一个 GUI 前端会非常有帮助也是很增值的。本章记述如何在 Web 应用中用 Quartz 来使得部署和维护 Job 更轻松。
一. 在 Web 应用中使用 Quartz
至此,你已经看到过许多在 J2SE 环境中独立运行的 Quartz 的例子。在第十章,"J2EE 中使用 Quartz",你也学到了 Quartz 良好的运作于 J2EE 环境中。但是,我们还没有向你介绍的是如何部署 Quartz 到一个 Java Web 应用(通常简写为 Web app)中。这就是本章唯一意图
你也许有几个理由想把 Quartz 集成到 Web 应用中。其中一些很显然的理由如下:
·使用 GUI 界面部署和运行 Job
·改善 Job 的管理和监控
·使更易于多人部署 Job
·能从你的 Web 应用内部来部署 Job
当然,在 Web 应用中使用 Quartz 主要原因还是允许通过 GUI 界面部署和维护 Job 更简单。第二个原因包括更好的管理已运行和已部署的 Job,还有当有故障时能更快得到通知。大体上,你想在其他任何软件程序之上放置一个 GUI 界面的理由也能通行于使用了 Quartz 的应用: 使更易于使用程序。
二. 集成 Quartz
幸运的是,有两方面使得很轻松集成 Quartz 到一个 Web 应用中。首先,Quartz 框架所需要的第三方库用起来相当简单。大多数所依赖的第三方库已经包含在任何 Java Web 应用中,尤其是像 Apache Struts 那样的由开源框架构建的组件。当部署 Quartz 到 Web 应用中时,Quartz 需要以下第三方库:
·Commons BeanUtil
·Commons Collections
·Commons Logging
·Commons Digester
假如你先前构建过 Java Web 应用,你应当见识过以上列出的所有组件。还有一些别的 JAR 包也可能是必须的,这要依赖于你对 Quartz 确切的部署。例如,假如 Quartz 要存储 Job 信息到数据库中,那样标准的 JDBC API 库(jdbc2_0-stdext.jar) 就是必须的,一起也可能要用到 Java 事物 API(jta.jar)。
你可能也需要一些可选的库,这依赖于你的总体需求。例如,如果你的应用需要发送 e-mail,你就需要 activation 和 JavaMail 库。但是这与你是否部署 Quartz 在一个 Web 应用还是作为一个独立的程序都是一样考虑的。
·Web 应用的结构
经历了过去的几年之后,Servlet 和 JSP 规范已得到改善,并允许更好的在不同的工具提供商之间移植。这在 Java 开发者社区中有着一种安定的效果,也让 Web 开发者把精力聚焦在 "真正的" 业务需求,而不用太关注应用的部署和运行的细节。
·安装 Quartz 库
像在任何其他的 Java Web 应用中一样,Servlet 规范指示了所有的 JAR 文件(第三方或别的) 必须放置于 WEB-INF/lib 中。因此,其中第一个步骤就是把 quartz.ar 和他所依赖的 JAR 文件放到 WEB-INF/lib 目录中。
留意 JAR 包版本和位置 你必须关心的不仅是要把哪些 JAR 文件放到 Web 应用中,还要注意使用什么版本的 JAR 包和确切的放置目录。随着开发社区的不断成熟,更多的持续集成发生在各个独立的项目之间。因此某一个项目依赖于另一个项目过期版本的事情也时有发生。在升级到库的新版本前请确保检查依赖性。 另一个请记住的事情是要把库安放到哪里,这是非常重要的(有时也很令人困惑的)。所幸的是,Web 容器提供商开始遵循着相近的规范,开发人员也变得更有学识。对于 Web 应用,你几乎总是要安装一些第三方包(因你的应用需求而定) 到 WEB-INF/lib 目录中。与 XML 解析器和像 Sun Java 安全套接字扩展(JSSE) 那样的加密包的问题仍然会冒出来,但这些问题随着商业和开源提供商更新他们的发行版时会变得更少。 |
·选择一个 Web 应用框架
这完全由你来选择用哪个 Web 应用框架来与 Quartz 集成。如此多框架可选择,以致于着实无法明确的选用哪个。要说某个框架优于另一个那是很主观的,因为太多的关乎于你的需求和技术的东西。然而,有几个 Web 框架已被一段时间所证明了的。一个例子就是 Apache Struts 框架(以前是以 Jakarta Struts 著名)。因本节的用意,我们将使用 Struts 框架来演示如何与 Quartz 集成。